package at.ac.tuwien.ifs.calendit.basis.gui;

import java.util.List;
import java.util.Vector;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

import at.ac.tuwien.ifs.calendit.basis.helper.Constants;
import at.ac.tuwien.ifs.calendit.dao.IAbteilung;
import at.ac.tuwien.ifs.calendit.dao.IMitarbeiter;
import at.ac.tuwien.ifs.calendit.domain.Abteilung;
import at.ac.tuwien.ifs.calendit.domain.Mitarbeiter;

public class BenutzerverwaltungLogic {
	private IMitarbeiter ma;
	private IAbteilung abt;

	/**
	 * The XML Bean Factory from Spring.
	 */
	private XmlBeanFactory xbf;
	
	public BenutzerverwaltungLogic(){
		ClassPathResource res = new ClassPathResource(Constants.SPRINGBEANS);
		xbf = new XmlBeanFactory(res);
		ma = (IMitarbeiter) xbf.getBean("MitarbeiterDAO");
		abt = (IAbteilung) xbf.getBean("AbteilungDAO");
	}
	
	public Vector<String> getAllMitarbeiterNames() {
		List<Mitarbeiter> allMA = ma.getMitarbeiters("ID");
		Vector<String> names = new Vector<String>();
		Mitarbeiter tmp;
		for (int i=0; i<allMA.size(); i++){
			tmp = allMA.get(i);
			String name = tmp.getVname() + " " + tmp.getNname() +" ("+tmp.getId()+")";
			names.add(i, name);
		}
		return names;
	}


	public boolean delete(int id) {
		return ma.delete(id);
	}

	public List<Abteilung> getAllAbteilungen() {
		return abt.getAbteilungen();
	}


	public Mitarbeiter save(String vname, String nname, String pw, String vorg,
			String abt, String rechte, String krank) {
		int i1 = vorg.indexOf("(")+1;
		int i2 = vorg.indexOf(")");
		String maId = vorg.substring(i1, i2);
		int id = Integer.valueOf(maId);
		int re = 0;
		if (rechte.equals("MA")) re = 1;
		else if (rechte.equals("Chef")) re = 2;
		else if (rechte.equals("Admin")) re = 3;
		else if (rechte.equals("GF")) re = 4;
		boolean kr;
		if (krank.equals("nein")) kr = false;
		else kr = true;
		Mitarbeiter m = new Mitarbeiter();
		m.setVname(vname);
		m.setNname(nname);
		m.setPasswort(pw); 
		m.setVorgesetzter(id);
		m.setAbteilung(abt);
		m.setRechte(re);
		m.setKrank(kr);
		return ma.add(m);
	}


	public Mitarbeiter update(int mId, String vname, String nname, String pw, String vorg,
			String abt, String rechte, String krank) {
		int i1 = vorg.indexOf("(")+1;
		int i2 = vorg.indexOf(")");
		String strIdv = vorg.substring(i1, i2);
		int vId = Integer.valueOf(strIdv);
		System.out.println(vId);
		int re = 0;
		if (rechte.equals("MA")) re = 1;
		else if (rechte.equals("Chef")) re = 2;
		else if (rechte.equals("Admin")) re = 3;
		else if (rechte.equals("GF")) re = 4;
		boolean kr;
		if (krank.equals("nein")) kr = false;
		else kr = true;
		Mitarbeiter m = new Mitarbeiter();
		m.setId(mId);
		m.setVname(vname);
		m.setNname(nname);
		m.setPasswort(pw); 
		m.setVorgesetzter(vId);
		m.setAbteilung(abt);
		m.setRechte(re);
		m.setKrank(kr);
		return ma.update(m);
	}
}
